<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!--引入jdbc.properties文件,尔后能够应用${key}的形式来拜访value--> <properties resource="jdbc.properties"/> <!-- 设置别名的标签,为某个具体的类型来设置一个别名,在mybatis配置文件的范畴中,来示意一个具体的类型 mybatis外围配置文件必须按指定的程序配置 type=""须要起别名的类型 alias 示意别名的名字 --> <typeAliases> <!--<typeAlias type="com.huawei.mybatis.pojo.User" alias="uerMapperAliase"></typeAlias>--> <!--或者 若不设置alias,以后的别名领有类型的别名,即类名且不辨别大小写--> <!-- <typeAlias type="com.huawei.mybatis.pojo.User"></typeAlias>--> <!--以包的形式来写别名--> <!--通过包来设置类型别名,指定包下所有的类型领有默认的别名,即类名且不辨别大小写--> <package name="com.huawei.mybatis.pojo"/> </typeAliases> <!-- 配置连贯数据库的环境 default="" 设置默认应用环境的id --> <environments default="development"> <!-- environment 设置一个具体的连贯数据库的环境 id 设置环境的惟一标识不能反复 --> <environment id="development"> <!-- transactionManager 设置事务管理器 type 设置事务的治理形式 type="JDBC" 应用JDBC原生的事务管理形式 type="MANAGED" 示意被治理,例如Spring --> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- dataSource 设置数据源 type="" 示意设置数据源的类型 type="POOLED" 示意应用数据库连接池 type="UNPOOLED" 示意不应用数据库连接池,每次连贯从新创立连接池 type="JNDI" 示意应用上下文的数据源 --> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jsbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> <environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--引入mybatis的映射文件--> <mappers> <!--<mapper resource="mappers/UserMapper.xml"/>--> <!-- 通过包来引入映射文件,必须满足两个条件: 1.mapper接口和映射文件所在的包必须统一 2.mapper接口的名字和映射文件的名字必须统一 --> <package name="com.huawei.mybatis.mapper"/> </mappers></configuration>
jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTCjsbc.username=rootjdbc.password=123456
package com.huawei.mybatis.pojo;
public class User {
private Integer id;private String username;private String password;private Integer age;private String gender;private String email;public User() {}public User(Integer id, String username, String password, Integer age, String gender, String email) { this.id = id; this.username = username; this.password = password; this.age = age; this.gender = gender; this.email = email;}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 getPassword() { return password;}public void setPassword(String password) { this.password = password;}public Integer getAge() { return age;}public void setAge(Integer age) { this.age = age;}public String getGender() { return gender;}public void setGender(String gender) { this.gender = gender;}public String getEmail() { return email;}public void setEmail(String email) { this.email = email;}@Overridepublic String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", age=" + age + ", gender='" + gender + '\'' + ", email='" + email + '\'' + '}';}
}
package com.huawei.mybatis.mapper;import com.huawei.mybatis.pojo.User;import java.util.List;public interface UserMapper { /** * 增加用户信息 * @return */ int insertUser(); /** * 批改用户信息 * @return */ int updateUser(); /** * 删除用户信息 */ void deleteUser(); /** * 依据用户id查问用户信息 */ User getUserById(); /** * 查问所有用户信息 */ List<User> getAllUser();}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.huawei.mybatis.mapper.UserMapper"> <!-- mapper接口和映射文件要保持一致: 1.mapper接口的全类名要和namespace保持一致 2.mapper接口的办法名要和映射文件的id保持一致 --> <!-- int insertUser(); --> <insert id="insertUser"> insert into t_user values(null,'admin','123','23','男','[email protected]') </insert> <!--int updateUser();--> <update id="updateUser"> update t_user set username='zhj',password='456' where id = 3 </update> <!--void deleteUser();--> <delete id="deleteUser"> delete from t_user where id = 3 </delete> <!--User getUserById();--> <!-- resultType 设置后果类型,查问的后果要转换的Java类型 resuleMap 自定义类型,解决一对多或多对一的映射关系 --> <select id="getUserById" resultType="com.huawei.mybatis.pojo.User"> select * from t_user where id = 2 </select> <!--List<User> getAllUser();--> <!--<select id="getAllUser" resultType="com.huawei.mybatis.pojo.User">--> <!--应用别名的形式--> <!--<select id="getAllUser" resultType="uerMapperAliase">--> <!--不写alias 应用不辨别大小写类型来做别名--> <select id="getAllUser" resultType="User"> select * from t_user </select></mapper>
package com.huawei.mybatis.utils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class SqlSessionUtil { public static SqlSession getSqlSession(){ SqlSession sqlSession= null; try { // 获取外围配置文件的输出流 InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml"); // 获取sqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 获取sqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); // 获取 sqlSession = sqlSessionFactory.openSession(true); } catch (IOException e) { e.printStackTrace(); } return sqlSession; }}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}%m (%F:%L) \n" /> </layout> </appender> <logger name="java.sql"> <level value="debug" /> </logger> <logger name="org.apache.ibatis"> <level value="info" /> </logger> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root></log4j:configuration>
package com.huawei.mybatis.test;import com.huawei.mybatis.mapper.UserMapper;import com.huawei.mybatis.pojo.User;import com.huawei.mybatis.utils.SqlSessionUtil;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;public class MybatisTest { @Test public void testInsert() throws IOException { //获取外围配置文件的输出流 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); //获取执行sql语句的对象 sqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //获取sqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); //获取sql的会话对象sqlSession,是mybatis提供的操作数据库的对象 //设置主动提交事务 SqlSession sqlSession = sqlSessionFactory.openSession(true); // SqlSession sqlSession = sqlSessionFactory.openSession(); //获取UserMapper的代理实现类对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper接口的办法,实现用户新增的性能 int result = userMapper.insertUser(); System.out.println("后果:"+result); //这种实现形式须要本人提交事务 // sqlSession.commit(); //敞开sqlSession的会话 sqlSession.close(); } @Test public void testUpdate(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.updateUser(); sqlSession.close(); } @Test public void deleteUpdate(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.deleteUser(); sqlSession.close(); } @Test public void testGetUserById(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUserById(); System.out.println(user); } @Test public void testGetAllUser(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> userList = userMapper.getAllUser(); // userList.forEach(x->{System.out.println(x);}); userList.forEach(System.out::println); System.out.println("后果:" + userList); }}