配置连接池的时候db.properties文件中的属性名要与applicationContext.xml dataSource 属性名要一致
配置连接池的时候db.properties文件中的属性名要与applicationContext.xml dataSource 属性名要一致
如果有同学遇到MyBatis Generator生成的实体类和数据库指定表中的数据不一样这个问题,需要在<jdbcConnection>这个标签里面配置这样一个<property>属性
<property name="nullCatalogMeansCurrent" value="true"/>
详细信息请参考以下链接:
https://blog.csdn.net/weixin_41809435/article/details/85207563
连接对象,connection
查询对象,preparestatemen
结果集。resulrset。
加载驱动。
关闭结果集,关闭对象,关闭连接。
四个包 build path
有点不理解为什么没有写 parameterType但是呢能够传递参数
set 标签 解决更新数据表时字符串拼接逗号"," 问题
<where></where> 代替 where
他可以帮助去掉 前and
<trim prefix="where" prefixOverrides="and"></trim>
用于代替 上面的where ,并且使用suffixOverrides="and" 可以去掉 后and
id 写主键
result 写普通属性 这样能够增加性能
为什么学习框架?
所谓框架,
首先创建一个接口
接口的方法名与mapper.xml中需要调用的sql语句的id一致
接口的返回值类型与xml的返回值类型一致
接口的参数类型和xml中的
添加用户
在操作数据库的语句中
可以不要返回值
将传递的参数添加;比如添加一个user对象
用set方法加入所需的东西
如果用select就用select的标签
如果要插入就用insert标签
以此类推
字符串拼接(%${}%)和占位符(#{})的区别
SQL中各有一个比较有意思的事情,当我们使用字符串拼接的时候我们会使用%王%,
这样会导致sql注入(不安全)
但是在sql中可以使用两个双引号包裹%来解决
“%”‘王’“%”
在mtbayis中将‘王’用#{name}代替即可
字符串拼接(%${}%)和占位符(#{})的区别
SQL中各有一个比较有意思的事情,当我们使用字符串拼接的时候我们会使用%王%,
这样会导致sql注入(不安全)
但是在sql中可以使用两个双引号包裹%来解决
“%”‘王’“%”
在mtbayis中将‘王’用#{}
在xml中写sql语句
在user中调用xml映射
for循环中用于输出list中给存放的结果集。
在mybatis中 模糊查询(like)中 我们在sql中写%王%在mybatis中用%${王}%,用${}去包裹字符串
在mapper中
namespace给文件重新命名
在select中
需要完整的select sql语句
在mybatis中需要
selcet id
select语句中占位符不在使用?而使用sql
parameterType中放置类型
打开Package Explorer
新建working set :项目空白区域右键new ->other-java->...
显示新建的working set
取代dao层
1.jdbc耗资源,重复的获取连接
2.jdbc
3.sql语句查询
*********Mapper动态代理********
-------模糊查询-------
1>MapperTest.java
@Test
public void Test2() throws IOException{
//配置文件
String resource = "sqlMapConfig.xml";
//读取配置文件
InputStream in = Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory ssf = new SqlSessionFactoryBuilder(in);
//生产一个sqlSession
SqlSession session = ssf.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list = mapper.selectUserByName("王");
for(User u : list){
System.out.println(u);
}
}
2>UserMapper.java
public interface UserMapper{
//动态代理原则:
//1、接口方法名需要与mapper.xml的要调用的sql语句的id一致
//2、接口的形参类型要与mapper.xml中parameterType一致
//3、接口返回值需要与mapper.xml中resultType一致
//4、mapper.xml中namespace要与接口的全包名一致
//5、注意:mapper动态代理开发中,用什么类型接返回的结果,mybatis会根据返回内容自动选择的。如果返回的是对象,直接用对象接;如果返回的是列表,直接用列表接。
//通过用户名模糊查询,获取用户列表
public List<User> selectUserByName(String name);
}
3>UserMapper.xml
<!-- 模糊查询,返回用户信息列表 -->
<select id="selectUserByName" parameterType="String" resultType=""com.XXX.bean.User>
select * from user where u_username like '%'#{name}'%'
</select>