目录
8、导入mybatis核心配置文件mybatis-config.xml
完成用户登录和用户注册逻辑,与后端数据库联系

点击新建模块,勾选使用骨架快速搭建。

在pom.xml文件中删除无用的代码,导入项目需要的依赖。设置打包方式位war包

声明编译的jdk版本,如果不导入插件,会报不支持发行版本5的错误
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>2.3.2version>
- <configuration>
- <source>1.8source>
- <target>1.8target>
- configuration>
- plugin>
- plugins>
- build>
使maven可以直接编译tomcat的项目插件,选择性安装,只能支持到tomcat7
- <plugin>
- <groupId>org.apache.tomcat.mavengroupId>
- <artifactId>tomcat7-maven-pluginartifactId>
- <version>2.2version>
- <configuration>
- <port>80port>
- configuration>
- plugin>
- <dependencies>
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>javax.servlet-apiartifactId>
- <version>3.1.0version>
- <scope>providedscope>
- dependency>
- <dependency>
- <groupId>com.alibabagroupId>
- <artifactId>druidartifactId>
- <version>1.1.12version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.34version>
- dependency>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.9version>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>3.8.2version>
- <scope>testscope>
- dependency>
- dependencies>
放入resources资源文件夹下。
-
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
-
- <typeAliases>
- <package name="com.itheima.pojo"/>
- typeAliases>
-
-
- <environments default="development">
- <environment id="development">
-
- <transactionManager type="JDBC"/>
-
- <dataSource type="POOLED">
-
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/users?useSSL=false&userServerPrepStmts=true"/>
- <property name="username" value="root"/>
- <property name="password" value="12345"/>
- dataSource>
- environment>
- environments>
- <mappers>
-
- <package name="com.itheima.mapper"/>
- mappers>
- configuration>
放入resources资源文件夹下。
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="com.itheima.mapper.UserMapper">
-
- mapper>
在java文件夹下创建一个mapper包,包下创建与SQL映射文件同名的mapper接口,在接口中声明操作数据库的方法,可以安装MyBatisX插件,实现方法与映射文件间的快速跳转。

同时要在resource文件夹下创建一个与mapper接口包名 同名的文件夹,将SQL映射文件放入。

完成Mapper代理
在 Web核心 中有明确说明,注意要配置Deployment,导入war包。
id user_name password tel

- public class User {
- private Integer id;
- private String username;
- private String password;
- private String tel;
-
- public User() {
- }
-
- public User(String username, String password,String tel) {
- this.username = username;
- this.password = password;
- this.tel = tel;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
- }
- public interface UserMapper {
- //根据用户名和密码查询用户对象
- User select(@Param("username") String username, @Param("password") String password);
-
- //注册用户
- int add(User user);
-
- //根据用户名查找是否存在
- User selectByName(@Param("username") String username);
- }
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="com.itheima.mapper.UserMapper">
-
- <resultMap id="userResultMap" type="user">
-
-
- <result column="user_name" property="username">result>
- resultMap>
-
-
- <select id="select" resultMap="userResultMap">
- select * from login where user_name=#{username} and password=#{password};
- select>
-
-
-
- <insert id="add" >
- insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
- insert>
-
-
- <select id="selectByName" resultMap="userResultMap">
- select * from login where user_name=#{username};
- select>
- mapper>
由于整个的会话工厂只需要一个,避免代码冗余,创建会话工厂工具类用来得到会话工厂。
- public class SqlSessionFactoryUtils {
-
- //静态代码块随着类的创建而创建,且只创建一次,由于会话工厂只需要一个,所以用静态代码块
- //登录与注册的代码逻辑相同,采用工具类获取会话工厂,避免冗余
- private static SqlSessionFactory sqlSessionFactory;
- //静态代码块不能抛异常,使用异常捕获
- static {
- try {
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static SqlSessionFactory getSqlSessionFactory(){
- return sqlSessionFactory;
- }
- }
- @WebServlet("/loginServlet")
- public class LoginServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //1、接收用户名和密码
- String username = req.getParameter("username");
- String password = req.getParameter("password");
-
- //2、使用Mybatis操作数据库
- //1、加载mybatis核心配置文件获取SqlSessionFactory
- SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
-
- //2、开启SqlSession对象
- //SqlSession不能写在工具类,因为SqlSession代表用户与数据库的连接,如果放在工具类,则所有用户共用同一个连接
- //这样无法管理事务,使多个用户之间产生影响
- SqlSession sqlSession = sqlSessionFactory.openSession();
-
- //3、获取Mapper接口的代理对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
- //4、执行接口方法(执行SQL语句)
- User user = userMapper.select(username,password);
-
- //5、释放资源
- sqlSession.close();
-
- //3、查看输出结果响应给用户
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter writer = resp.getWriter();
- if (user != null){
- writer.write("
登陆成功
"); - }else {
- writer.write("
登录失败
"); - }
-
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- this.doGet(req,resp);
- }
- }
- @WebServlet("/addServlet")
- public class AddServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //解决post获取请求数据中文乱码问题
- req.setCharacterEncoding("UTF-8");
-
- //1、接收用户名、密码和手机号
- String username = req.getParameter("username");
- String password = req.getParameter("password");
- String tel = req.getParameter("tel");
- User user1 = new User(username,password,tel);
-
- //2、使用Mybatis操作数据库
- //1、加载mybatis核心配置文件获取SqlSessionFactory
- SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
-
- //2、开启SqlSession对象
- SqlSession sqlSession = sqlSessionFactory.openSession();
-
- //3、获取Mapper接口的代理对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
- //4、执行接口方法(执行SQL语句)
- //先检查账户是否被注册
- int i = 0;
- User user = userMapper.selectByName(username);
- if (user == null){
- i = userMapper.add(user1);
- sqlSession.commit();
- }
-
- //5、释放资源
- sqlSession.close();
-
- //3、查看输出结果响应给用户
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter writer = resp.getWriter();
- if (i > 0){
- writer.write("
注册成功
"); - }else {
- writer.write("
注册失败,账户已存在
"); - }
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- this.doGet(req,resp);
- }
- }



需要前端资源请私信